\documentclass{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{geometry}
\geometry{top=15mm, bottom=15mm, left=1cm, right=1cm}
\usepackage[french]{babel}
\usepackage{pslatex}
\usepackage[colorlinks=true,urlcolor=black]{hyperref}
\usepackage{graphicx}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\footrulewidth}{0.4pt}
\fancyfoot[L]{Uubu.fr}
\fancyfoot[R]{sam. mars 31 08:33:00 CEST 2012}
\lfoot{\Large \textit{Uubu.fr}}
\hypersetup{pdfinfo={
Title={OpenSSL - pkeyutl},
Author={Sylvain Girod},
Creator={Bash script from uubu.fr's format version 1},
Producer={Bash script and PDFLaTeX},
Subject={Utilitaire de manipulation de clé publique},
CreationDate={D:20120331083300},
ModDate={D:20120331083300},
Keywords={PKI;sécurité;chiffrement;certificats}
}}
\begin{document}
 
\begin{center}
{\Huge OpenSSL - pkeyutl }
\end{center}
\vspace{1cm}
 
\begin{flushleft}
 
{\large Utilitaire de manipulation de clé publique}
 
\vspace{10mm}
 
\vspace{1cm}{\huge OPTIONS }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} -in filename]{Spécifie le nom du fichier d’entrée}
\item[\hspace{1mm} -out filename]{Spécifie le fichier de sortie}
\item[\hspace{1mm} -inkey file]{fichier clé d’entrée, par défaut devrait être une clé privée.}
\item[\hspace{1mm} -keyform PEM|DER]{Format de clé PEM, DER ou ENGINE}
\item[\hspace{1mm} -passin arg]{Source du mot de passe de la clé en entrée}
\item[\hspace{1mm} -peerkey file]{Fichier de clé pair, utilisé par les opérations de dérivation de clé}
\item[\hspace{1mm} -peerform PEM|DER]{Format du fichier de clé pair PEM, DER ou ENGINE}
\item[\hspace{1mm} -engine id]{pkeyutil va tenter d’obtenir une référence fonctionnelle de ce moteur.}
\item[\hspace{1mm} -pubin]{Le fichier d’entrée est une clé publique}
\item[\hspace{1mm} -certin]{L’entrée est un certificat contenant une clé publique}
\item[\hspace{1mm} -rev]{Renverse l’ordre du tampon d’entrée. Utile pour certains libraires comme CryptoAPI qui présente l’entrée au format little endian}
\item[\hspace{1mm} -sign]{Signe les données d’entrée et sort le résultat signé, requière une clé privée.}
\item[\hspace{1mm} -verify]{Vérifie les données en entrée avec le fichier de signature et indique si l’opération à réussie ou non}
\item[\hspace{1mm} -verifyrecover]{Vérifie les données entrée et sort les données récupérées}
\item[\hspace{1mm} -encrypt]{Chiffre les données en entrée en utilisant un clé publique}
\item[\hspace{1mm} -decrypt]{Déchiffre les données en entrée en utilisant une clé privée}
\item[\hspace{1mm} -derive]{Dérive une clé partagée en utilisant une clé paire}
\item[\hspace{1mm} -hexdump]{Dump en hexa les données sorties}
\item[\hspace{1mm} -asn1parse]{asn1parse les données en sortie. Utilisé avec -verifyrecover}
\end{description}
 
\vspace{1cm}{\huge Notes }
 
\
 
\hspace{1mm}  Les opérations et options dépendent de l’algorithme de clé et de son implémentation. Tous les algorithmes supportent l’option \textbf{digest:alg} qui spécifie le digest à utiliser pour les opérations de signature et vérification.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge RSA }
 
\
 
\hspace{1mm}  RSA supporte les opérations de chiffrement, déchiffrement, signature et vérification.
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} -rsa\_padding\_mode:mode]{Définis le padding RSA. (pkcs1, sslv23, none oaep, x931 et pss). oeap supporte uniquement le chiffrement et déchiffrement. pss support uniquement la signature et la vérification. rsa\_pss\_saltlen:len pour le mode pss, spécifie la longueur du salt. (Valeurs spéciales : -1 - le salt est à la longueur du digest, -2 - valeur maximum permise).}
\end{description}
 
\vspace{1cm}{\huge DSA }
 
\
 
\hspace{1mm}  DSA support les opérations de signature et de vérification uniquement.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge DH }
 
\
 
\hspace{1mm}  DH supporte uniquement les opérations de dérivation
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge EC }
 
\
 
\hspace{1mm}  EC supporte les opérations de signature, de vérification et de dérivation. La signature et vérification utilise ECDSA et la dérivation ECDH.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Exemples }
 
\
 
\hspace{1mm} Signer des données en utilisant une clé privée: \\
\hspace{1mm} \textbf{openssl pkeyutl -sign -in file -inkey key.pem -out sig} \\
\hspace{1mm} Récupérer des données signées: \\
\hspace{1mm} \textbf{openssl pkeyutl -verifyrecover -in sig -inkey key.pem} \\
\hspace{1mm} Vérifier la signature: \\
\hspace{1mm} \textbf{openssl pkeyutl -verify -in file -sigfile sig -inkey key.pem} \\
\hspace{1mm} Signer les données en utilisant un message digest: \\
\hspace{1mm} \textbf{openssl pkeyutl -sign -in file -inkey key.pem -out sig -pkeyopt digest:sha256} \\
\hspace{1mm} Dériver une clé secrète partagée: \\
\hspace{1mm} \textbf{openssl pkeyutl -derive -inkey key.pem -peerkey pubkey.pem -out secret} \\
\end{flushleft}
\end{document}
